//
// This software is now distributed according to
// the Lesser Gnu Public License. Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
// -- Happy Computing!
//
package com.stevesoft.pat;

/**
 * This is the same as Skip, except it needs a minimum of two characters in the
 * initializing String.
 * 
 * @see com.stevesoft.pat.Skip
 * @see com.stevesoft.pat.SkipBMH
 */
public class Skip2 extends Skip {

	int c1, mask1;

	public Skip2(String s, boolean ign, int offset) {
		super(s, ign, offset);
		c1 = s.charAt(1);
		m1 = 2 == s.length();
		if (ign) {
			mask1 = mkmask(c1);
		}
		else
			mask1 = 0;
	}

	public int find(StringLike s, int start, int end) {
		if (start > end)
			return -1;
		start += offset;
		int vend = min(s.length() - 2, end + offset);
		for (int i = start; i <= vend; i++)
			if (0 == (s.charAt(i) & mask) && 0 == (s.charAt(i + 1) & mask1)) {
				// if(m1||s.regionMatches(ign,i,src,0,src.length()) )
				if (m1 || CaseMgr.regionMatches(s, ign, i, src, 0, src.length()))
					return i - offset;
			}
		return -1;
	}
}
